/**
 * 系统ajax交互相关类
 */
var Ajax = {

	/**
	 * 普通调用
	 * 
	 * @param zone
	 *            需要刷新的区域id
	 * @param url
	 *            调用网址
	 * @param options
	 *            TODO 扩展参数
	 */
	post : function(zone, url, options) {
		$.ajax(_ajax.getOption(url, zone));
	},

	/**
	 * 弹出ajax窗口
	 * 
	 * @param url
	 *            调用网址
	 * @param options
	 *            TODO 扩展参数
	 */
	win : function(url, options) {
		var container = $('#ws-win-div');
		if (!container || container.length > 0) {
			container.remove();
		}
		var title = "提示窗口";

		$('body').append('<div id="ws-win-div" style="display:none;"></div>');
		$('#ws-win-div').dialog({
			modal : true,
			title : title
		});
		Ajax.post('ws-win-div', url, options);
	},

	/**
	 * 提交ajax表单
	 * 
	 * @param zone
	 * @param form
	 * @param options
	 */
	form : function(zone, form, options) {
		if (typeof (form) == 'string') {
			form = $('#' + form);
		}
		var url = form.attr('action');
		form.ajaxSubmit(_ajax.getOption(url, zone));
	}
};

/**
 * ajax内部类
 */
var _ajax = {

	/**
	 * 常量
	 */
	constant : {
		/**
		 * ajax loading
		 */
		loading : '<div class="loading"></div>'
	},

	/**
	 * 获取真實网址
	 * 
	 * @param url
	 * @returns
	 */
	getRealUrl : function(url) {

		if (!url || url.indexOf('?') < 0) {
			return url;
		}

		return url.substring(0, url.indexOf('?'));
	},

	/**
	 * 将url参数转换成json
	 * 
	 * @param url
	 * @param data
	 * @returns
	 */
	changeUrlParamToJson : function(url, data) {
		if (!data) {
			data = {};
		}

		if (!url || url.indexOf('?') < 0) {
			return data;
		}

		var paraString = url.substring(url.indexOf("?") + 1, url.length).split(
				"&");
		for ( var i = 0; i < paraString.length; i++) {

			var key = paraString[i].substring(0, paraString[i].indexOf("="));
			var val = paraString[i].substring(paraString[i].indexOf("=") + 1,
					paraString[i].length);
			if (data[key] == null) {
				data[key] = val;
			} else {
				if (!data[key].push) {
					data[key] = [ data[key] ];
				}
				data[key].push(val);
			}
		}

		return data;
	},
	/**
	 * 获取ajax入参
	 * 
	 * @param url
	 * @param zoneId
	 * @param errorZoneId
	 * @returns {___anonymous767_1172}
	 */
	getOption : function(url, zone, errorZoneId) {
		// 错误提示区域
		var errorZone;
		if (errorZoneId && errorZoneId != null
				&& $('#' + errorZoneId).length > 0) {
			errorZone = $('#' + errorZoneId);
		} else {
			errorZone = $('#' + zone);
			errorZoneId = zone;
		}

		var data = _ajax.changeUrlParamToJson(url);
		data['_zone'] = zone;
		data['_random'] = new Date();

		return {
			url : _ajax.getRealUrl(url),
			type : 'post',
			async : true,
			dataType : 'html',
			data : data,
			contentType : "application/x-www-form-urlencoded; charset=utf-8",
			error : function() {
			},
			success : function(result) {
				errorZone.html('');
				$("#" + zone).html(result);
			},
			beforeSend : function(XMLHttpRequest) {
				errorZone.html(_ajax.constant.loading);
				errorZone.find('.loading').position({
					of : errorZone,
					my : "center middle"
				});
			}
		};
	}
};